package com.itheima.test21;

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Test {
    /*
    运行程序,提示管理员进行登录,根据输入的工号和姓名判断是否登录成功,登录成功,进入下一步,登录失败,给出提示,结束程序
        系统中现有管理人员信息如下：
        10001,小王,男,13112345678
        10002,老于,男,13212345678
        10003,老方,男,13312345678
        保存在当前项目模块下的managers.txt文件中

        系统中现有地铁站信息如下:
        s3002,南锣鼓巷,6号线
        s5016,王府井,1号线
        s2026,西直门,4号线
        保存在当前项目模块下的subways.txt文件中

    要求：
        2.1. 运行程序,将managers.txt文件中的管理人员信息读取到集合中
             2.1.1. 将读取到的一行数据切割成字符串数组
             2.1.2. 将数组中的元素封装到Manager对象中
             2.1.3. 将Manager对象添加到集合中
        2.2. 将subways文件中的地铁站信息读取到另一个集合中
        2.3. 给出提示,获取管理人员输入的工号和姓名
        2.4. 判断管理人员信息集合中是否包含管理人员输入的工号和姓名,给出对应的登录结果
     */
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        ArrayList<Manager> managerArrayList = new ArrayList<>();
        ArrayList<Subway> subwayArrayList = new ArrayList<>();

        BufferedReader br = new BufferedReader(new FileReader("test02\\managers.txt"));
        String s;
        while ((s = br.readLine()) != null) {
            String[] split = s.split(",");
            Manager manager = new Manager(split[0], split[1], split[2], split[3]);
            managerArrayList.add(manager);
        }

        BufferedReader br1 = new BufferedReader(new FileReader("test02\\subways.txt"));
        String s1;
        while ((s1 = br1.readLine()) != null) {
            String[] split1 = s1.split(",");
            Subway subway = new Subway(split1[0], split1[1], split1[2]);
            subwayArrayList.add(subway);
        }
        br.close();
        br1.close();

        while (true) {
            System.out.println("请输入您的工号:");
            String id = sc.next();
            System.out.println("请输入您的姓名:");
            String name = sc.next();

            boolean flag = isLogin(managerArrayList,id, name);
            if (flag) {
                System.out.println("登陆成功!!!");
                /*
                当管理人员登录成功后,给出选项提示,根据管理人员的选择,执行后续的操作
                要求：
                    3.1. 给出提示: 1.查看地铁站 2.添加地铁站
                    3.2. 获取管理人员输入的选择
                    3.3. 根据管理人员的选择,执行对应的操作
                 */
                while (true) {
                    System.out.println("1.查看地铁站 2.添加地铁站 3.退出");
                    System.out.println("请输入您的选择:");
                    String choice = sc.next();
                /*
                当管理人员选择1时,执行对应的查看地铁站操作
                要求：
                    4.1. 判断地铁站集合中是否有地铁站信息
                    4.2. 如果没有地铁站信息,给出提示
                    4.3. 如果有地铁站信息,遍历集合,打印每个地铁站信息

                当管理人员选择2时,执行对应的添加地铁站操作
                要求：
                    5.1. 依次给出提示,获取管理人员输入的地铁站信息,包括地铁站编号，地铁站名称，所属路线
                    5.2. 将管理人员输入的地铁站信息封装成对象,存储到集合中
                    5.3. 将集合中的地铁站信息更新到文件中,再次打开文件时,应该包含管理人员刚才录入进去的地铁站信息,程序结束
                 */
                    switch (choice) {
                        default:
                            System.out.println("输入有误,请您重新输入");
                            break;
                        case "1":
                            seeSubway(subwayArrayList);
                            break;
                        case "2":
                            addSubway(subwayArrayList);
                            break;
                        case "3":
                            System.exit(0);
                    }
                }
            } else {
                System.out.println("登录失败!!!请重新登录!!!");
            }
        }
    }

    private static boolean isLogin(ArrayList<Manager> managerArrayList, String id, String name) {
            for (Manager manager : managerArrayList) {
                if (manager.getId().equals(id) && manager.getName().equals(name)) {
                    return true;
                }
            }
            return false;
        }

    private static void seeSubway(ArrayList<Subway> subwayArrayList) {
        if (subwayArrayList.isEmpty()) {
            System.out.println("没有地铁站的信息!!!");
        } else {
            for (int i = 0; i < subwayArrayList.size(); i++) {
                System.out.println(subwayArrayList.get(i));
            }
        }
    }

    private static void addSubway(ArrayList<Subway> subwayArrayList) throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要添加的地铁站编号:");
        String subwayId = sc.next();
        System.out.println("请输入要添加的地铁站名称:");
        String subwayName = sc.next();
        System.out.println("请输入要添加的所属路线:");
        String subwayRoad = sc.next();

        Subway subway = new Subway(subwayId,subwayName,subwayRoad);
        subwayArrayList.add(subway);

        BufferedWriter bw = new BufferedWriter(new FileWriter("test02\\subways.txt"));
        for (int i = 0; i < subwayArrayList.size(); i++) {
            bw.write(subwayArrayList.get(i).getSubwayId() + ","+subwayArrayList.get(i).getSubwayName()+","+subwayArrayList.get(i).getSubwayRoad());
            bw.write(System.lineSeparator());
            bw.flush();
        }
        bw.close();
        System.out.println("添加成功!!!");
    }
}
